/*{
"DESCRIPTION": "",
"CREDIT": "",
"ISFVSN": "2",
"CATEGORIES": [
"Geometry Adjustment", "Utility"
],
"INPUTS": [
{
"NAME": "inputImage",
"TYPE": "image"
},
{
"NAME": "offset",
"TYPE": "point2D",
"DEFAULT": [
0.5,
0.5
],
"MIN": [
0.0,
0.0
],
"MAX": [
1.0,
1.0
]
},
{
"NAME": "repeatImage",
"TYPE": "bool",
"DEFAULT": 0.0
}
]
}*/
void main() {
vec4 outputColor = vec4(0.0);
vec2 newLoc = offset;
vec2 topSize = RENDERSIZE;
newLoc = offset * RENDERSIZE;
newLoc.x = topSize.x - newLoc.x;
newLoc.y = topSize.y - newLoc.y;
newLoc = (gl_FragCoord.xy + 2.0*newLoc) - topSize;
if (repeatImage) {
newLoc = mod(newLoc, RENDERSIZE);
}
if ((newLoc.x >= 0.0)&&(newLoc.x < RENDERSIZE.x)&&(newLoc.y >= 0.0)&&(newLoc.y <= RENDERSIZE.y)) {
outputColor = IMG_PIXEL(inputImage, newLoc);
}
gl_FragColor = outputColor;
}